﻿////////////////////////////////////////////////// Andy's Experimental Language Syntax More to come soon //////////////////////////////////////////////////

//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Linq.Expressions;
//using System.Text;
//using NUnit.Framework;
//using RikMigrations;
//using RikMigrations.Providers;

//namespace RikMigrations.Fluent
//{
//    [TestFixture]
//    public class Class1
//    {
//        [Test]
//        public void go()
//        {
//            var provider = new MssqlProvider();

//            //var qry = from table in provider.Tables["table")
//            //                  where table.Column<int>("SchemeId") == 1 &&
//            //                        table.Column<int>("SchemeId") != 1 &&
//            //                        table.Column<int>("SchemeId") != 2;
           
//            var table1 = provider.AddTable("Name");
//            table1.AddColumn<int>("Id");
//            table1.AddColumn<string>("Name");
//            table1.Save();

//            privider.Create<Table>("Proposals", proposalTable =>
//                                                    {
//                                                        proposalTable.AddColumn<int>("Id").SetPrimaryKey();
//                                                        proposalTable.AddColumn<string>("Name");
//                                                    });

//            privider.Alter<Table>("Name", t =>
//                                              {
//                                                  t.Column("Id").ChangeType<int>();
//                                              });

                            
//            provider.Select("table", table => table.Column<int>("SchemeId") == 1 && table.Column<int>("SchemeId") != 1 && table.Column<int>("SchemeId") != 2);

//            provider.Update("Table",
//                            table => table.Column<string>("Scheme") = "New Scheme",
//                            table => table.Column<int>("SchemeId") = (int)Scheme.PgSelfBuild);

//            provider.Delete(Table.Name("table")
//                                .Where(table => table.Column<int>("SchemeId") == 1 && 
//                                                table.Column<int>("SchemeId") != 1 && 
//                                                table.Column<int>("SchemeId") != 2));

//            provider.Insert(Table.Name("table")
//                                .Set(table =>
//                                         {
//                                             table.Column<string>("Scheme").Value("New Scheme");
//                                             table.Column<bool>("IsCompleted").Value("New Scheme");
//                                             table.Column<int>("SchemeId").Value(1);
//                                         }));
//        }
        
//    }

//    internal static class ProviderHelper
//    {
//        public static void Select(this DbProvider a, string tableName, Expression<Func<Table, bool>> expression)
//        {
//            BinaryExpression bExpression = (BinaryExpression)expression.Body;

//            var table = new Table(a, tableName, false);
//            //t.BeginInvoke(t)
//        }

//        public static void Update(this DbProvider a)
//        {

//        }

//        public static void Delete(this DbProvider a)
//        {

//        }

//        public static void Insert(this DbProvider a)
//        {

//        }

//        public static T Column<T>(this Table table, string columnName)
//        {
//            return default(T);
//        }

//    }
//}
